<?php require_once(BASEPATH.'application/controllers/validaciones.php');

class notasc extends validaciones {

	function notasc(){
		parent::Controller();
		$this->load->library('rapyd');
        $this->load->library('Cuenta');
        $this->load->library('Inventario');
	}
    function index() {
        
		redirect('ventas/notasc/filteredgrid');
	}
	function filteredgrid(){
		
		$this->rapyd->load('datagrid2','datafilter');
		
		$atts = array(
			'width'      => '800',
			'height'     => '600',
			'scrollbars' => 'yes',
			'status'     => 'yes',
			'resizable'  => 'yes',
			'screenx'    => '0',
			'screeny'    => '0'
		);

		$scli=array(
		'tabla'   =>'scli',
		'columnas'=>array(
		'cliente' =>'C&oacute;digo Cliente',
		'nombre'=>'Nombre',
		'contacto'=>'Contacto'),
		'filtro'  =>array('cliente'=>'C&oacute;digo Cliente','nombre'=>'Nombre'),
		'retornar'=>array('nombre'=>'nombre'),
		'titulo'  =>'Buscar Cliente');
		$boton=$this->datasis->modbus($scli);

		$this->rapyd->uri->keep_persistence();
        
        $filter = new DataFilter('B&uacute;squeda de Notas de Credito');
        
        $ano=date("Y");
        		
        $filter->fechad = new dateonlyField('Desde', 'fechad','d/m/Y');
		$filter->fechah = new dateonlyField('Hasta', 'fechah','d/m/Y');
		$filter->fechad->clause  =$filter->fechah->clause ='where';
		$filter->fechad->db_name =$filter->fechah->db_name='fecha';
		$filter->fechad->insertValue = date("Y-m-d", mktime(0, 0, 0, 01, 1, $ano));
        //$filter->fechad->insertValue = date("Y-m-d");
		$filter->fechah->insertValue = date('Y-m-d');
		$filter->fechah->size=$filter->fechad->size=10;
		$filter->fechad->operator='>=';
		$filter->fechah->operator='<=';

		$filter->numero = new inputField('N&uacute;mero', 'numero');
		$filter->numero->size = 10;
        		
		$filter->codigo = new inputField("Codigo Cliente", "cod_cli");
		$filter->codigo->size=10;
		
		$filter->cliente = new inputField('Nombre de Cliente', 'nombre');
		$filter->cliente->size = 25;
		        
        $filter->moneda = new dropdownField("Moneda", "moneda");
		$filter->moneda->style='width:200px;';
		$filter->moneda->option("","Todas las monedas" );
		$filter->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo" );
		
		$filter->buttons('reset','search');
		$filter->build("dataformfiltro");
		
		function boton($tipo=''){
			
			IF($tipo=='X'){
				return 2;
			}else{
				return 1;	
			}
		}

		$grid = new DataGrid2('','notascc');
        $grid->db->orderby('numero','DESC');
		$grid->per_page = 10;
		$grid->use_function('boton');

	
		$uri = anchor('ventas/notasc/dataedit/show/<#id#>','<#serie#>-<#numero#>');
		
		$uri_2  = anchor_popup('formatos/ver/NOTASCC/<#id#>',img(array('src'=>'images/pdf_logo.gif','border'=>'0','alt'=>'Ver Html','height'=>'15','title'=>'Ver Html')),$atts);
		$uri_2 .= anchor_popup("formatos/verhtml/NOTASCC/<#id#>",img(array('src'=>'images/html_icon.gif','border'=>'0','alt'=>'Ver Pdf','height'=>'15','title'=>'Ver Pdf')),$atts);
		$uri_2 .= img(array('src'=>'images/<boton><#tipo_doc#></boton>.gif','border'=>'0','alt'=>'Estado','height'=>'12','title'=>'Estado'));
		
		$uri3 = anchor_popup('ventas/spre/factura/show/<#id#>','Negociación',$atts);
					
		$grid->column('Acci&oacute;n',$uri_2,"align='center'");
		
		$grid->column_orderby('N&uacute;mero' ,$uri                                            ,'numero' );
		$grid->column_orderby('Fecha'         ,'<dbdate_to_human><#fecha#></dbdate_to_human>'  ,'fecha'  );
		$grid->column_orderby('Codigo'        ,'cod_cli'                                       ,'cod_cli' );
		$grid->column_orderby('Nombre'        ,'nombre'                                        ,'nombre'  );
		$grid->column_orderby('Sub.Total'     ,'<nformat><#totals#></nformat>'                 ,'totals'  );
		$grid->column_orderby('Impuesto'      ,'<nformat><#iva#></nformat>'                    ,'iva'     );
		$grid->column_orderby('Total'         ,'<nformat><#totalg#></nformat>'                 ,'totalg'  );
		$grid->column_orderby('Vendedor'      ,'vd','vd'                                       ,"align='center'");
		$grid->column("Moneda"              ,"moneda","moneda"  ,"align='center'");
	
		$grid->add("ventas/notasc/dataedit/create",'Nueva Nota de Credito');
				
		$grid->totalizar('totals','iva','totalg');
        
		$grid->output;
		$grid->build('datagridST');
		//echo $grid->db->last_query();
		
		$style ='
		<style type="text/css">
		.fakeContainer { /* The parent container */
		    margin: 5px;
		    padding: 0px;
		    border: none;
		    width: 1200px; /* Required to set */
		    height: 350px; /* Required to set */
		    overflow: hidden; /* Required to set */
		}
		</style>	
		';
			

		$data["script"]  = script("jquery.js");
		$data["script"] .= script('superTables.js');
		$data['style']   = $style;
		$data['style']  .= style('superTables.css');

		$data['filtro']  = $filter->output;
		$data['content'] = $grid->output;
		
		$data['head']    = $this->rapyd->get_head();
		$data['title']   = heading('Notas de Credito a Clientes');
		$this->load->view('view_ventanas', $data);
	}
       
	function dataedit(){
		
		$this->rapyd->load('dataobject','datadetails');
		
		$mSCLId=array(
		'tabla'   =>'scli',
		'columnas'=>array(
		'cliente' =>'Cliente',
		'nombre'=>'Nombre', 
		'rifci'=>'Ruc',
		'dire11'=>'Direcci&oacute;n'),
		'filtro'  =>array('nombre'=>'Nombre'),
		'retornar'=>array('cliente'=>'cod_cli','nombre'=>'nombre','rifci'=>'rifci',
		'dire11'=>'direc'),
		'titulo'  =>'Buscar Cliente',
		'script'  => array('post_modbus_scli()'));
		$boton =$this->datasis->modbus($mSCLId);
		
		$mSFAC=array(
			'tabla'   =>'sfac',
			'columnas'=>array(
					'numero'=>'Numero',
					'totalg' =>'Total',
	                'rifci'=>'RIF',		
                   'nombre'=>'Nombre',
                   'fecha' =>'Fecha',
                   'serie'=>'Serie',
                   'moneda' =>'Moneda'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre','numero'=>'Numero'),
			'retornar'=>array(
                'serie'=>'serief',
                'numero'=>'factura',
                'fecha'=>'fechaf',
                'moneda'=>'moneda',
                'cambio'=>'cambio'),
                'p_uri'   => array(4=>'<#i#>'),
                'titulo'  => 'Buscar Facturas');
              
		$btn_sfac=$this->datasis->p_modbus($mSFAC);
		
		$modbus=array(
			'tabla'   =>'sinv',
			'columnas'=>array(
				'codigo'  =>'C&oacute;digo',
				'csiigo'  =>'Siigo',
				'descrip' =>'Descripci&oacute;n',
				'unidad' =>'Unidad',
				'precio1' =>'Precio 1',
				'precio2' =>'Precio 2',
				'precio3' =>'Precio 3',
				//'precio4' =>'Precio 4',
				'moneda'  =>'Moneda',
				'existen' =>'Existencia',
				),
			'filtro'  =>array('codigo'=>'Codigo','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'codigo' =>'codigo_<#i#>',
				'descrip'=>'desca_<#i#>',
				'unidad' =>'unidad_<#i#>'
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Art&iacute;culo',
			'where'   => '`activo` = "S"',
			'script'  => array('post_modbus_sinv(<#i#>)')
		);
		$btn=$this->datasis->p_modbus($modbus,'<#i#>');
		
		$modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'codigo_<#i#>',
				'descrip'=>'desca_<#i#>',
				'clase'=>'unidad_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta',
			'where'   => '`mostrar` = "S"'
		);
		$btn2=$this->datasis->p_modbus($modbus,'<#i#>');
		
		$script ='
		<script type="text/javascript" >
		
		function add_confirmation(transac) {
			idf = transac;
			var answer = confirm("¿Desea Anular Nota de Credito?")
			if (answer){
				alert("Nota de Credito")
				window.location = "../../anular/"+idf;
			}
			else{
				alert("La Nota de Credito no se anulo")
			}

		}

		</script>
		';
						
		$do = new DataObject('notascc');
		$do->rel_one_to_many('itnotascc', 'itnotascc', 'id');
		$do->pointer('scli' ,'scli.cliente=notascc.cod_cli','scli.tipo AS sclitipo','left');
		
		$edit = new DataDetails(' ', $do);	
		$edit->set_rel_title('itnotascc','Producto <#o#>');
		
		$edit->back_url = site_url("ventas/notasc/filteredgrid");
		
		$edit->pre_process('insert' ,'_pre_insert');
		$edit->pre_process('update' ,'_pre_insert');
		$edit->post_process('update','_post_insert');
		$edit->post_process('insert','_post_insert');
		
		$edit->id = new hiddenField(" ", 'id');
		$edit->transac = new hiddenField(" ", 'transac');
		
		$edit->tipo_doc = new  dropdownField ('Tipo','tipo_doc');
		$edit->tipo_doc->option("ND",'Nota Emitida');
        $edit->tipo_doc->option("X",'Nota Eliminada');
        $edit->tipo_doc->when=array('show');
        
		$edit->fecha = new DateonlyField('Fecha', 'fecha','Y-m-d');
		$edit->fecha->insertValue = date('Y-m-d');
		$edit->fecha->rule = 'required';
		$edit->fecha->size = 12;
		$edit->fecha->rule= "callback_cambio";
		
		$edit->almacen = new  dropdownField ('Almac&eacute;n', 'almacen');
		$edit->almacen->option("0000","NO APLICA");
	     $edit->almacen->options("SELECT ubica, CONCAT(ubica,' ',ubides) nombre FROM caub WHERE gasto='N' and activo='S' ORDER BY ubica");
		$edit->almacen->rule = 'required';
		$edit->almacen->style='width:220px;';
                
        $edit->vence = new DateonlyField('Vence', 'vence','Y-m-d');
		$edit->vence->rule = 'required';
        //$edit->vence->when=array('show');
		$edit->vence->size = 12;

		$edit->vd = new  dropdownField ('Vendedor', 'vd');
		$edit->vd->options('SELECT vendedor, CONCAT(vendedor,\' \',nombre) nombre FROM vend ORDER BY vendedor');
		$edit->vd->style='width:220px;';
		
		$edit->serie = new dropdownField("N&uacute;mero", "serie");
		$edit->serie->option("001","001-NOTA DE CREDITO");
		$edit->serie->rule= "required";
        $edit->serie->style='width:180px;';
                
        $edit->numero = new inputField('N&uacute;mero', 'numero');
		$edit->numero->size = 12;
		$edit->numero->maxlength=11;
		$edit->numero->rule= "callback_chexiste";
        
        $edit->serief = new inputField('N&uacute;mero de Factura', 'serief');
		$edit->serief->size = 3;
		$edit->serief->maxlength=3;
		//$edit->serief->readonly  =true;
		        				
		$edit->numerof = new inputField('Numero', 'factura');
		$edit->numerof->size = 12;
		//$edit->numerof->readonly  =true;
		$edit->numerof->maxlength=11;
		$edit->numerof->in="serief";
		$edit->numerof->append($btn_sfac);
				
		$edit->fechaf = new DateonlyField('Fecha de Documento', 'fechaf','Y-m-d');
		$edit->fechaf->insertValue = date('Y-m-d');
		//$edit->fechaf->readonly  =true;
		$edit->fechaf->size = 12;
        		     
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","Administraci&oacute;n");
		$edit->ccosto->option('0002',"Operaciones");
		$edit->ccosto->option('0003','Importaci&oacute;n'); 
		$edit->ccosto->style='width:220px;'; 
		$edit->ccosto->when=array('show'); 
		
		$edit->formap = new dropdownField("Forma de pago", "formap");
		$edit->formap->option("","Seleccione la forma de pago" );
		$edit->formap->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM seriefp WHERE compro='F' ORDER BY codigo");
		$edit->formap->rule= "required";
        $edit->formap->style='width:220px;';
        $edit->formap->when=array('show');
        
        $edit->cuentai = new inputField('Cuenta', 'cuentai');
		$edit->cuentai->size     = 12;
		$edit->cuentai->rule     = 'required';
		$edit->cuentai->readonly  =true;
		$edit->cuentai->db_name='cuenta';
		$edit->cuentai->when=array('show');

		$edit->cliente = new inputField('Codigo','cod_cli');
		$edit->cliente->size = 6;
		$edit->cliente->maxlength=5;
		$edit->cliente->append($boton);
		$edit->cliente->readonly  = true;
		//$edit->cliente->insertValue =$cliente;
				
		$edit->nombre = new inputField('Nombre', 'nombre');
		$edit->nombre->size = 35;
		$edit->nombre->maxlength=40;
		$edit->nombre->autocomplete=false;
		$edit->nombre->rule= 'required';
		$edit->nombre->readonly  = true;
		//$edit->nombre->insertValue =$nombre;
		
		$rifci=$this->datasis->traevalor('TIPO');

		$edit->rifci   = new inputField("$rifci",'rifci');
		$edit->rifci->autocomplete=false;
		$edit->rifci->size = 15;
		$edit->rifci->readonly  = true;
		//$edit->rifci->insertValue =$crifci;

		$edit->direc = new inputField('Direcci&oacute;n','direc');
		$edit->direc->size = 55;
		$edit->direc->readonly  = true;
		
		$edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:220px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");
		$edit->moneda->rule = 'required';
		$edit->moneda->group = "Precios";
		
		//$fechac=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha=CURDATE()");
		$edit->cambio = new inputField('Cambio', 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12;
		//$edit->cambio->insertValue=$fechac;
        //$edit->cambio->when=array('show');
        
		//**************************
		//  Campos para el detalle
		//**************************
        
		$edit->codigo = new inputField('C&oacute;digo <#o#>', 'codigo_<#i#>');
		$edit->codigo->db_name  = 'codigo';
		$edit->codigo->rel_id   = 'itnotascc';
		$edit->codigo->rule     = 'required';
		$edit->codigo->size    = 15;
		$edit->codigo->append($btn2.' Cuenta');
		$edit->codigo->append($btn.' Producto');

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->size=30;
		$edit->desca->db_name='desca';
		$edit->desca->maxlength=40;
		$edit->desca->readonly  = true;
		$edit->desca->rel_id='itnotascc';
		$edit->desca->rule = 'required';
		
		$edit->unidad = new inputField('Unidad <#o#>', 'unidad_<#i#>');
		$edit->unidad->size=10;
		$edit->unidad->db_name='unidad';
		$edit->unidad->maxlength=40;
		$edit->unidad->rule = 'required';
		$edit->unidad->rel_id='itnotascc';

		$edit->cana = new inputField('Cantidad <#o#>', 'cana_<#i#>');
		$edit->cana->db_name  = 'cana';
		$edit->cana->css_class= 'inputnum';
		$edit->cana->rel_id   = 'itnotascc';
		$edit->cana->maxlength= 10;
		$edit->cana->size     = 6;
		$edit->cana->rule     = 'required|positive';
		$edit->cana->autocomplete=false;
		$edit->cana->onkeyup  ='importe(<#i#>)';
		$edit->cana->style    = 'width:90%';

		$edit->preca = new inputField('Precio <#o#>', 'preca_<#i#>');
		$edit->preca->db_name   = 'preca';
		$edit->preca->css_class = 'inputnum';
		$edit->preca->rel_id    = 'itnotascc';
		$edit->preca->onkeyup  ='importe(<#i#>)';
		$edit->preca->rule      = 'required|positive';
		$edit->preca->size    = 15;

		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=10;
		$edit->importe->css_class='inputnum';
		$edit->importe->onkeyup  ='totalizar()';
		$edit->importe->rel_id   ='itnotascc';
		$edit->importe->size    = 15;

		$edit->ivat = new inputField('Impuesto', 'iva');
		$edit->ivat->css_class ='inputnum';
		$edit->ivat->readonly  =true;
		$edit->ivat->size      = 10;
		
		$edit->totals = new inputField('Sub-Total', 'totals');
		$edit->totals->css_class ='inputnum';
		$edit->totals->readonly  =true;
		$edit->totals->size      = 10;

		$edit->totalg = new inputField('Monto Total', 'totalg');
		$edit->totalg->css_class ='inputnum';
		$edit->totalg->readonly  =true;
		$edit->totalg->size      = 10;
		
		$edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =60;
		$edit->condi1->maxlength=70;
		$edit->condi1->rule = 'strtoupper';

		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));
			
		$numero  =$edit->_dataobject->get("numero");
		$id      =$edit->_dataobject->get("id");
        $serie   =$edit->_dataobject->get("serie");
        $transac =$edit->_dataobject->get("transac");
        $cod_cli =$edit->_dataobject->get("cod_cli");
        $moneda  =$edit->_dataobject->get("moneda");
        
        if($edit->_status=='show'){
			$id   =$do->get('id');	
			//$this->inventario->sp_costos($id,'NC');
		}

		if(($edit->_status=='show')&&(empty($numero))){
			$this->_elimina($id);			
		}
		
		$edit->button_status('btn_cargar','Anular Nota de Credito',"javascript:add_confirmation('$transac')",'TR','show');

		$accion="javascript:window.location='".site_url("ventas/notasc/aplicar/$cod_cli/$id/$serie/$numero/$moneda")."'";
		$edit->button_status('btn_cargar','Aplicar a Facturas',$accion,'TR','show');
		
		$conten['form']  =&  $edit;
		
		$edit->buttons('save','add_rel','back','undo');
		$edit->build();
		              
		$data['title']   = heading('Nota de Credito No.'.$serie.'-'.$numero);
		$data['content'] = $this->load->view('view_itnotacc', $conten,true);
		$data['style']   = style('redmond/jquery-ui-1.8.1.custom.css');
		$data['style']  .= style('jquery.autocomplete.css');

		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('plugins/jquery.autocomplete.js');
		$data['script'] .= script('nformat.js');
		$data['script'] .= $script;	

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
		
	}
	function aplicar($cod_cli,$id,$serie,$numero,$moneda,$msj=''){
		
		$monto=$this->datasis->dameval("SELECT totalg FROM notascc WHERE id='$id'");
		$transac=$this->datasis->dameval("SELECT transac FROM notascc WHERE id='$id'");
		
		$mSQL=$this->db->query("SELECT IF(a.compro='O','F',a.compro)compro ,a.banco, a.id idp,a.serie,a.numero,IF(compro='L',a.control,a.numero) as letra,
		a.moneda,cod_cli,a.tipo,dias,fecha,vence,
		observa,a.monto, a.abono, a.monto-a.abono as resta, ultiabonado 
		FROM itpagos as a 
		WHERE a.abono < a.monto AND cod_cli='$cod_cli' and a.moneda='$moneda' 
		ORDER BY a.monto DESC");
		
		$a="SELECT a.transac,a.numerod,IF(compro='L',b.control,b.numero) as letra,a.id as cobro,a.serie,a.numero,a.fecha,a.monto 
		FROM cobros AS a
		JOIN itpagos as b on a.idpago=b.id
		WHERE itabono='$id' AND a.cod_cli='$cod_cli' AND a.tipo='NC'
		ORDER BY a.numerod";
        $mSQL_2=$this->db->query($a);
        		
        $mresta=$this->datasis->dameval("select monto-abonos from smov where transac='$transac' and tipo_doc='NC'");
		
		$conten['id']       =$id;
        $conten['msj']      =$msj;
        $conten['mresta']   =$mresta;
		$conten['result']   =$mSQL->result();
		$conten['aplicadas']=$mSQL_2->result();
		$conten['cantmd']   =$mSQL->num_rows();
        		
		$data['title']   = heading('Aplicar Nota de Credito '.$serie.'-'.$numero.' por '.$monto);
		$data['content'] = $this->load->view('view_aplicancc', $conten,true);
		$data['script']  = script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
        
		
	}
	function delete($idnotacc,$ntransac){
        
        $cod_cli=$this->datasis->dameval("SELECT cod_cli FROM notascc WHERE id='$idnotacc'");
		$numerof =$this->datasis->dameval("SELECT numero FROM notascc WHERE id='$idnotacc'");
		$serief  =$this->datasis->dameval("SELECT serie FROM notascc WHERE id='$idnotacc'");
		$moneda =$this->datasis->dameval("SELECT moneda FROM notascc WHERE id='$idnotacc'");
        $transac =$this->datasis->dameval("SELECT transac FROM notascc WHERE id='$idnotacc'");
        
        $query=$this->db->query("SELECT id,idpago FROM cobros WHERE transac='$ntransac'");
        
        foreach($query->result() as $items ){
		
			$abono=$this->datasis->dameval("SELECT monto FROM cobros WHERE id='$items->id'");
			$this->db->query("UPDATE itpagos SET abono=abono-$abono WHERE id='$items->idpago'");
            
			//2. suma itpagos en smov si no son letras
		
			$tipo=$this->datasis->dameval("SELECT COUNT(*) FROM itpagos WHERE id='$items->idpago'AND compro='O'");
			
			IF($tipo>0){
				
				$t2transac=$this->datasis->dameval("SELECT transac FROM itpagos WHERE id='$items->idpago' AND compro='O'");
				$this->db->query("UPDATE smov SET abonos=abonos-$abono WHERE transac='$t2transac'");
				
			}
			
			$this->db->query("DELETE FROM cobros WHERE id='$items->id'");
            
		}
		        
        
        $this->db->query("DELETE FROM gser WHERE transac='$ntransac'");
        $this->db->query("DELETE FROM gitser WHERE transac='$ntransac'");
                
		//$this->_abonos($idnotacc);
        
        $tot=$this->datasis->dameval("SELECT SUM(monto) FROM cobros WHERE itabono='$idnotacc' and tipo='NC'");
        $this->db->query("UPDATE smov SET abonos=IF('$tot'>0,'$tot',0) WHERE transac='$transac'");
       
		
		redirect("ventas/notasc/aplicar/$cod_cli/$idnotacc/$serief/$numerof/$moneda");
	}
	function _abonos($idpago){
			
		//1.Suma abonos de cobros en itpagos
		$abono=$this->datasis->dameval("SELECT SUM(monto) FROM cobros WHERE idpago='$idpago'");
		$this->db->query("UPDATE itpagos SET abono=$abono WHERE id='$idpago'");
					
		//2. suma itpagos en smov si no son letras
		
		$tipo=$this->datasis->dameval("SELECT COUNT(*) FROM itpagos WHERE id='$idpago'AND compro='O'");
		
		IF($tipo>0){
			
			$transac=$this->datasis->dameval("SELECT transac FROM itpagos WHERE id='$idpago' AND compro='O'");
			$contado=$this->datasis->dameval("SELECT SUM(abono) FROM itpagos WHERE transac='$transac' AND compro='O'");
			$letras=$this->datasis->dameval("SELECT SUM(monto) FROM letras WHERE transac='$transac' AND tipo NOT IN ('CONTADO','LIBRE')");
			$tot=$letras+$contado;
			$this->db->query("UPDATE smov SET abonos='$tot',letras='$letras' WHERE transac='$transac'");
		}

	}
	function apliguarda(){
		
		$idnotacc=$this->input->post('id');
		$idp     =$this->input->post('idp');
		$pago    =$this->input->post('pago');
		$cant    =$this->input->post('cant');
		$numero  =$this->input->post('numero');
		$serie   =$this->input->post('serie');
        $fechac   =$this->input->post('fechac');
        $numerod   =$this->input->post('numeroc');
        $compro   =$this->input->post('compro');
        $control   =$this->input->post('letra');
        		
		$cod_cli=$this->datasis->dameval("SELECT cod_cli FROM notascc WHERE id='$idnotacc'");
        $nombre=$this->datasis->dameval("SELECT nombre FROM notascc WHERE id='$idnotacc'");
        $rif=$this->datasis->dameval("SELECT rifci FROM notascc WHERE id='$idnotacc'");
		$numerof =$this->datasis->dameval("SELECT numero FROM notascc WHERE id='$idnotacc'");
		$serief  =$this->datasis->dameval("SELECT serie FROM notascc WHERE id='$idnotacc'");
		$moneda =$this->datasis->dameval("SELECT moneda FROM notascc WHERE id='$idnotacc'");
        $transac =$this->datasis->dameval("SELECT transac FROM notascc WHERE id='$idnotacc'");
        
        IF(!empty($numerod)){
    
         $chek=$this->datasis->dameval("SELECT COUNT(*) FROM gser WHERE comp='L' AND seriei='010' AND numeroi='$numerod'");
         $ntransac=$this->datasis->fprox_numero('ntransa');
            
            IF($chek==0){
                
                $chek2=$this->datasis->dameval("SELECT COUNT(*) FROM cambio WHERE fecha='$fechac'");
                
                IF($chek2>0){
                    
                    $o=$i=0;
                    
                    while($o<$cant){
                        
                        $array=array('0'=>$idp[$i],'1'=>$pago[$i],'2'=>$serie[$i],'3'=>$numero[$i],'4'=>$compro[$i],'4'=>$compro[$i],'5'=>$control[$i]);         
                        
                        $mSQL_2=$this->db->query("UPDATE itpagos SET abono=abono+'$pago[$i]' WHERE id='$idp[$i]'");
                                    
                        IF($pago[$i]>0){
                            
                            $this->db->query("INSERT INTO cobros (transac,tipo,serie,numero,cod_cli,monto,idpago,itabono,tipod,numerod,fecha)VALUES('$ntransac','NC','$serie[$i]','$numero[$i]','$cod_cli','$pago[$i]','$idp[$i]','$idnotacc','L','$numerod','$fechac');");
                            $cuenta=$this->datasis->dameval("SELECT cuenta FROM itpagos WHERE id='$idp[$i]'");
                            $desca=$this->datasis->dameval("SELECT IF(compro='L',CONCAT('LETRA ',serie,'-',control),IF(compro='O',CONCAT('FACTURA ',serie,'-',numero),CONCAT('NOTA DE DEBITO ',serie,'-',numero)))desca FROM itpagos WHERE id='$idp[$i]'");
                            $this->db->query("INSERT INTO gitser (fecha,transac,proveed,ruc,cuenta,desca,cana,preca,iva,importe,tipo,vexento,estampa,exento,serief,factura,tipoc) VALUES('$fechac','$ntransac','$cod_cli','$rif','$cuenta','$desca','1','$pago[$i]','0','$pago[$i]','C','S',CURRENT_TIMESTAMP,'$pago[$i]','$serie[$i]','$control[$i]','$compro[$i]')");
							$this->_abonos($idp[$i]);	
                        
                        }
                        
                        $i++;
                        $o++;
                    }
                    
                    $tot=$this->datasis->dameval("SELECT SUM(monto) FROM cobros WHERE itabono='$idnotacc' and tipo='NC'");
                    $this->db->query("UPDATE smov SET abonos='$tot' WHERE transac='$transac'");
                                    
                    $cuenta=$this->cuenta->cxc($moneda);
                    $tot2=$this->datasis->dameval("SELECT SUM(monto) FROM cobros WHERE itabono='$idnotacc' and numerod='$numerod' and tipod='L' and tipo='NC'");
                    $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fechac'");
                    $usuario =$this->session->userdata['usuario'];
                    
                    $this->db->query("INSERT INTO gser (fecha,recepcion,transac,cuenta,comp,seriei,numeroi,seriep,numero,ccosto,formap,proveed,rif,nombre,vence,cambio,moneda,tipo_doc,condi1,usuario,estampa,cajachica) VALUES 
                                                    ('$fechac','$fechac','$ntransac','$cuenta','L','010','$numerod','$serief','$numerof','0001','0000','$cod_cli','$rif','$nombre','$fechac','$cambio','$moneda','FC','NOTA DE CREDITO CLIENTE $numerof APLICADA A FACTURAS','$usuario',CURRENT_TIMESTAMP,'N')");
                
                    $this->db->query("INSERT INTO gitser (fecha,transac,proveed,ruc,cuenta,desca,cana,preca,iva,importe,tipo,vexento,estampa,exento,serief,factura,tipoc) VALUES('$fechac','$ntransac','$cod_cli','$rif','$cuenta','NOTA DE CREDITO CLIENTE $numerof APLICADA A FACTURAS','1','$tot2','0','$tot2','D','S',CURRENT_TIMESTAMP,'$tot2','$serief','$numerof','NC')");
            
                }else{
                
                    $msj="No se ha registrado el VALOR DE LA MONEDA para la fecha $fechac";  
                    redirect("ventas/notasc/aplicar/$cod_cli/$idnotacc/$serief/$numerof/$moneda/$msj"); 
                
                }
              
            }else{
                
                $msj="Comprobante $numerod registrado";  
                redirect("ventas/notasc/aplicar/$cod_cli/$idnotacc/$serief/$numerof/$moneda/$msj"); 
                
            }
        }else{
           
           $msj="El campo fecha y comprobante son obligatorios";  
           redirect("ventas/notasc/aplicar/$cod_cli/$idnotacc/$serief/$numerof/$moneda/$msj"); 
        }
        		
        redirect("ventas/notasc/aplicar/$cod_cli/$idnotacc/$serief/$numerof/$moneda/");
		
	}
    function _elimina($id){
	
		$this->db->query("DELETE FROM notascc WHERE id='$id' ");
		$this->db->query("DELETE FROM itnotascc WHERE id='$id'");
		redirect("ventas/notasc/filteredgrid");
	}
    function anular($transac){
		 
		$id=$this->datasis->dameval("SELECT id FROM notascc where transac='$transac' ");
		$numero=$this->datasis->dameval("SELECT numero FROM notascc where transac='$transac' ");
		
		$this->db->query("DELETE FROM smov WHERE transac='$transac'");
		
		$this->db->query("UPDATE notascc SET tipo_doc='X' WHERE transac='$transac'");
		
		

		
		logusu('notascc',"NOTA DE CREDITO  $numero ELIMINADA");
        
        redirect("ventas/notasc/dataedit/show/$id");
		//echo 'hola'.$transac;
	}
	function chexiste($codigo){
		
		$numero=$this->input->post('numero');
		$numero =str_pad($numero, 11, "0", STR_PAD_LEFT);
		
		$chek=$this->datasis->dameval("SELECT COUNT(*) FROM notascc WHERE numero='$numero'");
		if ($chek > 0){
			$this->validation->set_message('chexiste',"El numero de nota de credito $numero ya se encuetra registrada");
			return FALSE;
		}else {
		 return TRUE;
		}
	}
	function _pre_insert($do){
		
		$fecha =$do->get('fecha');
		$fechaf =$do->get('fechaf');
		$numero=$do->get('numero');
		$moneda=$do->get('moneda');        
		$serie =$do->get('serie'); 
		$cambio =$do->get('cambio'); 
         
        if($moneda=='01'){
			$formap='051';
		
		}else{
			$formap='052';
		}
        
       
        $cuenta=$this->datasis->dameval("SELECT cuenta FROM seriefp WHERE codigo='$formap'");
        $numero =str_pad($numero, 11, "0", STR_PAD_LEFT); 
        $ntransa=$this->datasis->fprox_numero('ntransa');
        
        IF(empty($cambio)){
         //actualiza al cambio segun fecha
        $cambio=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha='$fechaf'");
        $do->set('cambio',$cambio);
		}
        
        $do->set('cuenta',$cuenta);
        $do->set('formap',$formap);
        $do->set('numero',$numero); 
        $do->set('transac',$ntransa);
        $do->set('tipo_doc','NC');
        $do->set('ccosto','0001');
        
        $igv=$this->datasis->traevalor('IGV');
        
        $iva=$totals=$totalg=0;
        
		$cana=$do->count_rel('itnotascc');
		
		for($i=0;$i<$cana;$i++){
			
			$do->set_rel('itnotascc','serie'  ,$serie,$i);
			$do->set_rel('itnotascc','numero' ,$numero,$i);
			
			$itimporte   = $do->get_rel('itnotascc','importe',$i);
			$totals  += $itimporte;
						
		}
		
		$iva     = ($totals*$igv/100);	

		$do->set('totals' ,round($totals ,2));
		$do->set('iva'    ,round($iva    ,2));
		$do->set('totalg' ,round($totals+$iva ,2));

		return true;
          	
	}
	function insertar($id){
		
        $usuario=$this->session->userdata['usuario'];   
        $ntransa =$this->datasis->fprox_numero('ntransa');
        
        $mSQL="SELECT   serie,numero,almacen,fecha,  vd,  cod_cli,  rifci,  nombre, direc,  dire1,  iva,totals,  totalg  
        FROM sfac  WHERE id='$id'";
        
        $query = $this->db->query($mSQL);
        $row = $query->row();
        
        $serie      =$row->serie;
        $numero     =$row->numero;
        $fecha      =$row->fecha;
               
        foreach($query->result() as $sfac ){
                        
            $mSQL_insert=$this->db->query("INSERT INTO notascc (serief,factura,fechaf,transac,tipo_doc, vd,  cod_cli,  rifci,  nombre,  direc,  iva, totals,  totalg,  usuario,almacen)
                                                     VALUES('$serie','$numero','$fecha','$ntransa','NC','$sfac->vd','$sfac->cod_cli','$sfac->rifci','$sfac->nombre','$sfac->direc','$sfac->iva','$sfac->totals','$sfac->totalg','$usuario','$sfac->almacen')");
            
            $this->inventario->sp_costos($id,'NC');
		}
        
        $nc=$this->datasis->dameval("SELECT id FROM notascc WHERE transac='$ntransa'");
        
        
        //Inserta Items
        
        $mSQL_items="SELECT codigo,  descrip,  unidad,  cantidad, precio ,total FROM sitems WHERE id='$id'";
        
        $query_items = $this->db->query($mSQL_items);
        
        foreach($query_items->result() as $sitems ){
            
            $mSQL_insert=$this->db->query("INSERT INTO itnotascc (id,codigo,  desca,  cana,  preca,  importe, unidad)
                                                     VALUES('$nc','$sitems->codigo','$sitems->descrip','$sitems->cantidad','$sitems->precio','$sitems->total','$sitems->unidad')");
                    
		}
        
        redirect("ventas/notasc/dataedit/modify/$nc");

		
	}
	function _post_insert($do){
		
		$serie=$do->get('serie');
		$numero=$do->get('numero');
        $cod_cli=$do->get('cod_cli');
        $nombre=$do->get('nombre');
        $monto=$do->get('totalg');
        $iva=$do->get('iva');
        $fecha=$do->get('fecha');
        $vence=$do->get('vence');
        $moneda=$do->get('moneda');
        $cuenta=$do->get('cuenta');
        $transac=$do->get('transac');
        $cambio=$do->get('cambio');
        $condi1=$do->get('condi1');
        $id=$do->get('id');
        	
		$this->db->query("DELETE FROM smov    WHERE transac='$transac'");        
        
        $usuario=$this->session->userdata['usuario'];
        
                                          		
		$mSQL_3=$this->db->query("INSERT INTO smov (moneda,tipo_doc,serie,numero,fecha,vence,cod_cli,  nombre, monto , impuesto, usuario,transac)
                                            VALUES('$moneda','NC','$serie','$numero','$fecha','$vence','$cod_cli','$nombre','$monto','$iva','$usuario','$transac')");   
		
	
		$this->inventario->sp_costos($id,'NC');
		
		logusu('notascc',"NOTA DE CREDITO al cliente $cod_cli numero $numero CREADO");
		
	}

	     
}
